package br.com.gerenteweb.managedBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.gerenteweb.beans.Loja;
import br.com.gerenteweb.daos.LojaDao;
import br.com.gerenteweb.interfaces.ManageBeansInterface;

/**
 *
 * @author Felipe-
 */

@ManagedBean(name = "lojaBean")
@SessionScoped
public class LojaBean implements Serializable, ManageBeansInterface {

	private static final long serialVersionUID = 1L;
	private Loja loja = new Loja();
	private LojaDao lojaDao = new LojaDao();
	private List<Loja> lojas = new ArrayList<Loja>();

	public LojaBean() {

	}

	@Override
	public String adicionar() {
		try {
			lojaDao.add(loja);
			limpar();
			return "lista-de-lojas";

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	@Override
	public String remover() {
		try {
			Map<String, String> params = FacesContext.getCurrentInstance()
					.getExternalContext().getRequestParameterMap();
			String idLoja = params.get("idLoja");
			Loja loja = lojaDao.getPorID(Long.valueOf(idLoja));

			lojaDao.remove(loja);
			limpar();
			return "lista-de-lojas";
		} catch (Exception e) {
			e.printStackTrace();
			return "lista-de-lojas";
		}
	}

	@Override
	public String carregar() {
		try {
			Map<String, String> params = FacesContext.getCurrentInstance()
					.getExternalContext().getRequestParameterMap();
			String idLoja = params.get("idLoja");
			this.loja = lojaDao.getPorID(Long.valueOf(idLoja));
			return "carregar-loja";
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "lista-de-lojas";
	}

	@Override
	public void atualizar() {
		try {
			lojaDao.update(loja);
			limpar();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public void listar() {
		try {
			lojas = lojaDao.getLojas();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void limpar() {
		this.loja = new Loja();
		this.lojaDao = new LojaDao();
		this.lojas = new ArrayList<Loja>();

	}

	public Loja getLoja() {
		return loja;
	}

	public LojaDao getLojaDao() {
		return lojaDao;
	}

	public void setLojaDao(LojaDao lojaDao) {
		this.lojaDao = lojaDao;
	}

	public void setLoja(Loja loja) {
		this.loja = loja;
	}

	public List<Loja> getLojas() {
		listar();
		return lojas;
	}

	public void setLojas(List<Loja> lojas) {
		this.lojas = lojas;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((loja == null) ? 0 : loja.hashCode());
		result = prime * result + ((lojaDao == null) ? 0 : lojaDao.hashCode());
		result = prime * result + ((lojas == null) ? 0 : lojas.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		LojaBean other = (LojaBean) obj;
		if (loja == null) {
			if (other.loja != null)
				return false;
		} else if (!loja.equals(other.loja))
			return false;
		if (lojaDao == null) {
			if (other.lojaDao != null)
				return false;
		} else if (!lojaDao.equals(other.lojaDao))
			return false;
		if (lojas == null) {
			if (other.lojas != null)
				return false;
		} else if (!lojas.equals(other.lojas))
			return false;
		return true;
	}

}